#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:6031)

#include <stdio.h>

//struct Book
//{
//	char name[20];
//	char id[20];
//	int price;
//};
//
//int main()
//{
//	struct Book b = { "C语言", "C20210509", 55 };
//	struct Book* pb = &b;
//
//	printf("书名: %s\n", pb->name);
//	printf("书号: %s\n", pb->id);
//	printf("价格: %d\n", pb->price);
//
//	//printf("书名: %s\n", (*pb).name);
//	//printf("书号: %s\n", (*pb).id);
//	//printf("价格: %d\n", (*pb).price);
//
//	//printf("书名: %s\n", b.name);
//	//printf("书号: %s\n", b.id);
//	//printf("价格: %d\n", b.price);
//
//	return 0;
//}

//int main()
//{
//	char a = 3;
//	char b = 127;
//	char c = a + b;
//
//	printf("%d\n", c);	// -126,整型提升按符号位补位，无符号补0
//
//	return 0;
//}

//#include <math.h>
//int main()
//{
//	double p = 5000.0;
//	double m = 5.0;
//	double i = 1.0;
//	double r = 0.4788;
//	double inte = p * m *(r / 12) * pow(1+r/12, m) / (pow(1 + r / 12, m) - 1) - p;
//	printf("%lf/n", inte);
//	
//	return 0;
//}

//int main()
//{
//	int a = 4;
//	float f = 4.5f;
//	a + f;	//值属性 类型 float
//	return 0;
//}

//#include <string.h>
//int main()
//{
//	int arr[] = { 1,2,(3,4),5 };
//	printf("%lld\n", sizeof(arr));	//16
//	char str[] = "hello bit";
//	printf("%lld %lld\n", sizeof(str), strlen(str));
//	//10 9
//	//strlen - 函数-求字符串长度，找\0之前出现的字符个数
//	//sizeof - 操作符-计算变量/类型所占内存的大小，单位是字节
//
//	return 0;
//}

//实现函数init() 初始化数组为全0
//实现print() 打印数组的每个元素
//实现reverse() 函数完成数组元素的逆置
//void init(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		arr[i] = 0;
//	}
//}
//
//void print(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//
//void reverse(int arr[], int sz)
//{
//	int left = 0;
//	int right = sz - 1;
//
//	while (left<right)
//	{
//		int temp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = temp;
//		left++;
//		right--;
//	}
//}
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//
//	print(arr, sz);
//	reverse(arr, sz);
//	print(arr, sz);
//	init(arr, sz);
//	print(arr, sz);
//
//	return 0;
//}

//int main()
//{
//	int arr1[] = { 1,3,5,7,9 };
//	int arr2[] = { 2,4,6,8,10 };
//
//	int sz = sizeof(arr1) / sizeof(arr1[0]);
//	int i = 0;
//
//	for ( i = 0; i < sz; i++)
//	{
//		int tmp = arr1[i];
//		arr1[i] = arr2[i];
//		arr2[i] = tmp;
//	}
//
//	return 0;
//}

//int main()
//{
//	int a = 10;	//a占4个字节
//	int* pa = &a;	//拿到a的4个字节中第一个字节的地址
//	*pa = 20;
//
//	return 0;
//}

//int main()
//{
//	int* pa;
//	char* pc;
//	float* pf;
//
//	printf("%lld\n", sizeof(pa));	// 8
//	printf("%lld\n", sizeof(pc));	// 8
//	printf("%lld\n", sizeof(pf));	// 8
//}

//指针类型的意义
//1.指针类型决定了：指针解引用的权限有多大（能操作几个字节）
//2.指针类型决定了：指针走一步，能走都远（步长）

//int main()
//{
//	int arr[10] = { 0 };
//	int* p = arr;
//	char* pc = arr;
//	printf("%p\n", p);
//	printf("%p\n", p+1);
//
//	printf("%p\n", pc);
//	printf("%p\n", pc+1);
//
//	//int a = 0x11223344;
//	//char* pc = &a;
//	//*pc = 0;
//
//	//int* pa = &a;
//	//*pa = 0;
//
//	return 0;
//}

//int main()
//{
//	int arr[10] = {0};
//	int* p = arr;
//	for (int i = 0; i < 10; i++)
//	{
//		*(p + i) = 1;
//	}
//
//	return 0;
//}
